package org.tea.crawl.biz.domain.service;

import org.tea.crawl.biz.domain.common.CookieInfo;

import java.util.List;

/**
 * 用于生成 Cookie 服务的统一接口
 *
 * @author lxh
 */
public interface CookieService {

    /**
     * 返回一个当前可用的 Cookie 信息对象，如果不存在可用的 Cookie 信息对象，
     * 那么具体的实现类应当考虑阻塞当前的请求，或者抛出一个 {@link org.tea.crawl.biz.exception.UnAvailableCookieException}
     * 以提示客户端
     *
     * @return 创建的一个可用的 Cookie 对象列表（一个域下可能有多个 Cookie 属性）
     */
    List<CookieInfo> createValidSingleCookie();

    /**
     * 释放一个 Cookie，使其可以被其它机器使用
     *
     * @param cookieId 待释放的 Cookie 所属 ID
     * @return 如果成功，返回一个大于 0 的整数，否则，返回 {@code -1}
     */
    int releaseCookie(String cookieId);
}
